Horizontal এবং Vertical Partitioning

Database Tutorials - মাইএসকিউএল (MySQL) - MySQL পার্টিশনিং এবং শার্ডিং
292

Partitioning হল ডেটাবেসে ডেটা বিভাজনের একটি পদ্ধতি, যার মাধ্যমে ডেটার পারফরম্যান্স বৃদ্ধি এবং পরিচালনা সহজ করা যায়। Horizontal Partitioning এবং Vertical Partitioning দুইটি প্রধান পদ্ধতি যার মাধ্যমে ডেটাবেসের টেবিলগুলির মধ্যে ডেটা ভাগ করা হয়।


1. Horizontal Partitioning (Row Partitioning)

Horizontal Partitioning-এ টেবিলের রেকর্ড (Rows) আলাদা আলাদা ভাগে ভাগ করা হয়। এতে প্রতিটি ভাগ (Partition) একটি নির্দিষ্ট কন্ডিশনের উপর ভিত্তি করে তৈরি হয়, এবং পার্টিশনগুলোকে স্বাধীনভাবে পরিচালনা করা যেতে পারে। Horizontal Partitioning সাধারণত Range Partitioning, List Partitioning, এবং Hash Partitioning এর মতো বিভিন্ন কৌশলে করা হয়।

উদাহরণ:

ধরা যাক, একটি orders টেবিল রয়েছে যেখানে হাজার হাজার রেকর্ড রয়েছে। টেবিলটি Order Date এর ভিত্তিতে বিভক্ত করা যেতে পারে, যাতে একই মাসের অর্ডারগুলো একটি নির্দিষ্ট পার্টিশনে চলে যায়।

CREATE TABLE orders (
    order_id INT,
    order_date DATE,
    customer_id INT,
    total_amount DECIMAL(10, 2)
)
PARTITION BY RANGE (YEAR(order_date)) (
    PARTITION p2020 VALUES LESS THAN (2021),
    PARTITION p2021 VALUES LESS THAN (2022),
    PARTITION p2022 VALUES LESS THAN (2023)
);

এখানে:

  • p2020, p2021, এবং p2022 পার্টিশনগুলো পৃথকভাবে তৈরি হয়েছে, যেখানে ২০২০, ২০২১, এবং ২০২২ সালের অর্ডারগুলোর রেকর্ড থাকবে।

Horizontal Partitioning এর সুবিধা:

  • পারফরম্যান্স উন্নতি: নির্দিষ্ট একটি পার্টিশনে কাজ করতে গিয়ে পারফরম্যান্স বৃদ্ধি পায়, কারণ ডেটাবেসে ছোট অংশে ডেটা পরিচালনা করা হয়।
  • স্কেলেবিলিটি: বড় ডেটাসেটগুলোকে ছোট ছোট অংশে ভাগ করা সহজ হয়, এবং সিস্টেমের স্কেল বাড়ানো সম্ভব হয়।
  • ব্যাকআপ ও রিকভারি সহজ: ছোট ছোট পার্টিশনের জন্য আলাদাভাবে ব্যাকআপ এবং রিকভারি করা যায়।

2. Vertical Partitioning (Column Partitioning)

Vertical Partitioning-এ টেবিলের কলাম (Columns) ভাগ করে আলাদা আলাদা টেবিলে সংরক্ষণ করা হয়। এটি সাধারণত তখন ব্যবহৃত হয়, যখন একটি টেবিলের কিছু কলাম খুব বেশি ব্যবহার হয় এবং কিছু কলাম খুব কম ব্যবহৃত হয়। এতে অপ্রয়োজনীয় কলামগুলো আলাদা করে রাখা হয়, এবং কার্যকরভাবে কম কলাম সম্বলিত টেবিল থেকে ডেটা নিষ্কাশন করা হয়।

উদাহরণ:

ধরা যাক, একটি users টেবিল রয়েছে যার মধ্যে user_id, username, password, email, এবং profile_picture কলাম রয়েছে। এখানে, যদি profile_picture কলামটি খুব কম ব্যবহৃত হয়, তবে এটি আলাদা টেবিলে রাখা যেতে পারে।

CREATE TABLE users (
    user_id INT PRIMARY KEY,
    username VARCHAR(100),
    password VARCHAR(100),
    email VARCHAR(100)
);

CREATE TABLE user_profiles (
    user_id INT PRIMARY KEY,
    profile_picture BLOB,
    FOREIGN KEY (user_id) REFERENCES users(user_id)
);

এখানে:

  • users টেবিলটি সাধারণ তথ্য ধারণ করবে এবং user_profiles টেবিলটি শুধুমাত্র profile_picture এর তথ্য ধারণ করবে।

Vertical Partitioning এর সুবিধা:

  • পারফরম্যান্স উন্নতি: কম ব্যবহৃত কলামগুলো পৃথক টেবিলে রাখার ফলে, মূল টেবিলের সাথে কাজ করার সময় পারফরম্যান্স বেড়ে যায়।
  • ডেটা সংরক্ষণের স্থান সাশ্রয়: বড় কলামগুলো (যেমন, BLOB, TEXT) আলাদাভাবে সংরক্ষণ করার মাধ্যমে মেমরি ব্যবহারে সাশ্রয় করা যায়।

Horizontal Partitioning এবং Vertical Partitioning এর মধ্যে পার্থক্য

ফিচারHorizontal PartitioningVertical Partitioning
কীভাবে ডেটা বিভক্ত করা হয়?রেকর্ডগুলিকে (Rows) ভাগ করা হয়।কলামগুলোকে (Columns) ভাগ করা হয়।
ব্যবহার কবে?বড় টেবিলের রেকর্ডগুলিকে ভেঙে ছোট ছোট পার্টিশনে ভাগ করতে।কম ব্যবহৃত কলামগুলোকে আলাদা টেবিলে রাখতে।
ব্যবহারিক উদাহরণটাইমস্ট্যাম্প অনুযায়ী ডেটা ভাগ করা (যেমন, বছরের ভিত্তিতে)।কিছু নির্দিষ্ট কলামগুলো আলাদা টেবিলে রাখা।
ফলাফলপ্রতিটি পার্টিশনে কম রেকর্ড থাকবে, ফলে পারফরম্যান্স বৃদ্ধি পাবে।কলাম ভিত্তিক পারফরম্যান্স বৃদ্ধি পাবে।
সুবিধাডেটা স্কেলিং এবং দ্রুত অনুসন্ধান।দ্রুত ডেটা নিষ্কাশন এবং মেমরি সাশ্রয়।

3. এটি কখন ব্যবহার করবেন?

  • Horizontal Partitioning উপকারী যখন টেবিলের রেকর্ডগুলো অনেক বেশি হয় এবং আপনাকে শুধুমাত্র একটি নির্দিষ্ট সেগমেন্টের ডেটার সাথে কাজ করতে হয়।
  • Vertical Partitioning উপকারী যখন আপনার টেবিলের কলামগুলো বড় এবং কিছু কলাম খুব কম ব্যবহার হয়, এবং আপনি এগুলোর জন্য আলাদা আলাদা পারফরম্যান্স ও স্টোরেজ কনফিগারেশন চান।

সারাংশ

Horizontal Partitioning এবং Vertical Partitioning দুটি গুরুত্বপূর্ণ কৌশল, যা MySQL ডেটাবেসে পারফরম্যান্স বৃদ্ধি করতে সাহায্য করে। Horizontal Partitioning ডেটাকে রেকর্ডের ভিত্তিতে ভাগ করে, যা সাধারণত বড় টেবিলগুলোর জন্য উপকারী, যখন Vertical Partitioning কলাম ভিত্তিক ভাগ করা হয়, যা কিছু নির্দিষ্ট কলামের জন্য কার্যকর। এগুলোর সঠিক প্রয়োগ ডেটাবেসের পারফরম্যান্স এবং স্কেলেবিলিটি উন্নত করতে গুরুত্বপূর্ণ ভূমিকা পালন করে।

Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...